1.21 Prozeduren
 
Damit scheint der Kaffeeautomat fertig. Halten wir dennoch kurz inne und überlegen, wie man ihn noch weiter verfeinern könnte. Es ist sehr unschön, dass sich hinter mehreren Steuerelementen der gleiche Code befindet. Deshalb könnte man den Code, der mehrmals verwendet wird, auslagern. Dies geschieht in einer so genannten Prozedur. Am Ende des Codes (vor End Class) befindet sich beispielsweise die Prozedur:
Private Sub Ein()
chkMilch.Enabled = True
chkZucker.Enabled = True
End Sub
Sie wird nun aufgerufen:
Private Sub optKaffee_CheckedChanged(ByVal _
sender As System.Object, ByVal e As _
System.EventArgs) Handles _
OptKaffee.CheckedChanged
Call Ein()
End Sub
Analog funktioniert dies auch für das Ausschalten:
Private Sub Aus()
chkMilch.Enabled = False
chkZucker.Enabled = False
chkMilch.Checked = False
chkZucker.Checked = False
End Sub
Die folgende Prozedur wird vom Wasser und von der Cola aus aufgerufen:
Private Sub optCola_CheckedChanged(ByVal _
sender As System.Object, ByVal e As _
System.EventArgs) Handles OptCola.CheckedChanged
Call Aus()
End Sub
Noch eleganter wäre es, wenn nicht zwei Prozeduren, sondern lediglich eine verwendet würde, um die Felder ein- beziehungsweise auszuschalten. Eine Reihe von Möglichkeiten steht zur Verfügung - es sollen lediglich einige gezeigt werden. Man könnte eine globale Variable deklarieren:
Dim fSchalter as Boolean
Nun wird für Kaffee, Tee und Wasser eingeschaltet:
Private Sub optKaffee_CheckedChanged(ByVal _
sender As System.Object, ByVal e As _
System.EventArgs) Handles _
optKaffee.CheckedChanged
fSchalter = True
Call EinAus()
End Sub
Die beiden anderen Buttons setzen die Variable auf False:
Private Sub optCola_CheckedChanged(ByVal _
sender As System.Object, ByVal e As _
System.EventArgs) Handles OptCola.CheckedChanged
fSchalter = False
Call EinAus()
End Sub
Die modifizierte Prozedur EinAus sieht dann wie folgt aus:
Private Sub EinAus()
If fSchalter = True Then
chkMilch.Enabled = True
chkZucker.Enabled = True
Else
chkMilch.Enabled = False
chkZucker.Enabled = False
chkMilch.Checked = False
chkZucker.Checked = False
End If
Abbildung 1.38
Nun gibt es keine Cola mit Milch!
|